Enterprise Version
constructive approach